// 婚介所 --- 代理模式 
// 需要特定的条件才能获取到对应内容
// 还可以送礼物

// 规定礼物的数据结构由type和value组成
const present = {
    type: '巧克力',
    value: 60
}
// 女生信息
const girl = {
    name: "Amadeus",
    aboutMe: ".....",
    age: 18,
    career: "student",
    fakeAvatar: 'xxxx',
    avatar: 'xxxxxxx',
    phone: 12406,
    // 礼物数组
    presents: [],
    // 拒收50块以下的礼物
    bottomValue: 50,
    lastPresent: present
}

// 普通私密信息
const baseInfo = ['age', 'career']
// 最私密信息
const privateInfo = ['avatar', 'phone']

// 用户对象实例 
const user = {
    name: 'ff',
    // 是否验证
    isValidated: true,
    // 是否vip
    isVIP: false
}

// 婚介所
const Lovers = new Proxy(girl, {
    get: function (girl, key) {
        if (baseInfo.indexOf(key) !== -1 && !user.isValidated) {
            console.log('您还没有完成验证哦')
            return
        }
        if (user.isValidated && privateInfo.indexOf(key) !== -1 && !user.isVIP) {
            console.log('只有VIP才可以查看')
            return
        }
        return girl[key]
    },
    set: function (girl, key, val) {
        // 最近一次送来的礼物会尝试赋值给lastPresent字段
        if (key === 'lastPresent') {
            if (val.value < girl.bottomValue) {
                console.log('您的礼物价值太低已被拒收了')
                return
            }
        }
        // 如果没被拒收 则赋值成功 同时并入present数组
        girl.lastPresent = val
        girl.presents = [...girl.presents, val]
    }
})
// 送三次礼物
Lovers.lastPresent = {
    type: "wf",
    value: "50"
}
Lovers.lastPresent = {
    type: "wg",
    value: "49"
}
Lovers.lastPresent = {
    type: "wfs",
    value: "50"
}
console.log(Lovers)